package com.zhiche.lisa.lspm.dao.mapper.fleet;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.zhiche.lisa.lspm.dao.model.carrier.CarrierInfo;
import com.zhiche.lisa.lspm.dao.model.driver.Driver;
import com.zhiche.lisa.lspm.dao.model.fleet.FleetBind;
import com.zhiche.lisa.lspm.dao.model.trailer.TrailerInfo;
import com.zhiche.lisa.lspm.vo.fleet.FleetBindVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 车队与资源绑定关系 Mapper 接口
 * </p>
 *
 * @author qichao
 * @since 2018-07-18
 */
public interface FleetBindMapper extends BaseMapper<FleetBind> {
    /**
     * 匹配所有该承运商的未绑定车辆信息
     *
     * @param ew 条件对象
     */
    List<FleetBindVO> fleetUnBindLine(@Param("ew") EntityWrapper<FleetBindVO> ew);

    /**
     * 分页方式匹配对应车队的车辆信息
     *
     * @param ew 条件对象
     */
    List<FleetBindVO> fleetBindLine(Page<FleetBindVO> page, @Param("ew") EntityWrapper<FleetBindVO> ew);

    /**
     * 匹配对应车队信息-牵引车
     *
     * @param ew 条件对象
     */
    List<FleetBindVO> queryBindCarrierList(@Param("ew") EntityWrapper<FleetBindVO> ew);

    /**
     * 匹配对应车队信息-挂车
     *
     * @param ew 条件对象
     */
    List<FleetBindVO> queryBindTrailerList(@Param("ew") EntityWrapper<FleetBindVO> ew);

    /**
     * 匹配对应车队信息-司机
     *
     * @param ew 条件对象
     */
    List<FleetBindVO> queryBindDriverList(@Param("ew") EntityWrapper<FleetBindVO> ew);

    /**
     * 根据车队绑定关系获取绑定的司机
     */
    List<CarrierInfo> queryCarrierBindLine(Page<CarrierInfo> page, @Param("ew") EntityWrapper<CarrierInfo> ew);

    /**
     * 根据车队绑定关系获取绑定的司机
     */
    List<TrailerInfo> queryTrailerBindLine(Page<TrailerInfo> page, @Param("ew") EntityWrapper<TrailerInfo> ew);

    /**
     * 根据车队绑定关系获取绑定的司机
     */
    List<Driver> queryDriverBindWithFleet(Page<Driver> page, @Param("ew") EntityWrapper<Driver> ew);

    List<FleetBind> selectListNoTenant(@Param("ew") EntityWrapper<FleetBind> ew);

    /**
     * 根据车队信息获取所属承运商下的人送司机
     */
    List<FleetBindVO> queryPersonBindList(Page<FleetBindVO> page, @Param("ew") EntityWrapper<FleetBindVO> ew);

    List<Driver> queryPersonUnBindList(@Param("ew") Wrapper<Driver> ew);

    List<FleetBindVO> queryBindCarrierNoTenant(@Param("ew") EntityWrapper<FleetBindVO> ew);

    List<FleetBindVO> queryBindTrailerNoTenant(@Param("ew") EntityWrapper<FleetBindVO> ew);

    List<FleetBindVO> queryBindDriverNoTenant(@Param("ew") EntityWrapper<FleetBindVO> ew);
}
